package com.chukun.gateway.core.loadbalance;

import com.chukun.gateway.common.instance.ServiceInstance;
import com.chukun.gateway.core.context.GatewayContext;

/**
 * @author chukun
 * @version 1.0.0
 * @description 负载均衡顶级接口
 * @createTime 2023/12/3 22:25
 */
public interface IGatewayLoadBalanceRule {

    /**
     * 通过上下文参数获取服务实例
     * @param ctx
     * @return
     */
    ServiceInstance choose(GatewayContext ctx);

    /**
     * 通过服务ID拿到对应的服务实例
     * @param serviceId
     * @return
     */
    ServiceInstance choose(String serviceId, boolean gray);
}
